/*
 * Powered By XY
 * Since 2020
 */

package com.xy.biz.uc.domain.query;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * 
 * 
 * @author zgy
 * @date 2021-9-23
 */
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Data
public class PositionQuery {
	
	private static final int DEFAULT_PAGE_SIZE = 20;
	private static final int MAX_PAGE_SIZE = 1000;

	/**
	 * 返回记录的起始位置。
	 */
	private Integer offset;
	
	/**
	 * 返回记录的个数。
	 */
	private Integer rows;
	
	/**
	 * 构建一个查询。
	 *
	 * @param	pageIndex	页索引
	 */
	public PositionQuery(Integer pageIndex) {
		this(pageIndex, DEFAULT_PAGE_SIZE);
	}
	
	/**
	 * 构建一个查询。
	 *
	 * @param	pageIndex	页索引
	 * @param	pageSize	页大小
	 */
	public PositionQuery(Integer pageIndex, Integer pageSize) {
		int index = pageIndex == null ? 0 : pageIndex;
		int size = pageSize == null ? MAX_PAGE_SIZE : pageSize;
		this.offset = index * size;
		this.rows = size;
	}
	
	/**
	 * 构造符合条件的查询对象，仅返回一条
	 * 
	 * @return
	 */
	public static PositionQueryBuilder one() {
		return PositionQuery.builder().offset(0).rows(1);
	}
	
	/**
	 * 构造符合条件的查询对象，控制返回的记录上限
	 * 
	 * @return
	 */
	public static PositionQueryBuilder max() {
		return PositionQuery.builder().offset(0).rows(MAX_PAGE_SIZE);
	}
	/**
	 * 岗位Id
	 */
	private Long positionId;
	/**
	 * 用户Id
	 */
	private Long userId;
	/**
	 * 用户编码，登录名
	 */
	private String userCode;
	/**
	 * 员工编号
	 */
	private String employeeCode;
	/**
	 * 姓名
	 */
	private String name;
	/**
	 * 英文名
	 */
	private String englishName;
	/**
	 * 职位
	 */
	private String jobTitle;
	/**
	 * 员工关系
	 */
	private String relationship;
	/**
	 * 入职日期
	 */
	private java.time.LocalDate entryDateBegin;
	/**
	 * 入职日期
	 */
	private java.time.LocalDate entryDateEnd;
	/**
	 * 转正日期
	 */
	private java.time.LocalDate regularDateBegin;
	/**
	 * 转正日期
	 */
	private java.time.LocalDate regularDateEnd;
	/**
	 * 离职日期
	 */
	private java.time.LocalDate resignDateBegin;
	/**
	 * 离职日期
	 */
	private java.time.LocalDate resignDateEnd;
	/**
	 * 学历
	 */
	private String education;
	/**
	 * 毕业院校
	 */
	private String school;
	/**
	 * 专业
	 */
	private String speciality;
	/**
	 * 证书
	 */
	private String certificate;
	/**
	 * 身份证
	 */
	private String identification;
	/**
	 * 生日
	 */
	private java.time.LocalDate birthdayBegin;
	/**
	 * 生日
	 */
	private java.time.LocalDate birthdayEnd;
	/**
	 * 户口性质
	 */
	private String registrationType;
	/**
	 * 户籍所在地
	 */
	private String registrationAddress;
	/**
	 * 银行卡
	 */
	private String bankCard;
	/**
	 * 租户Id，0表示不指定
	 */
	private Long tenantId;
	/**
	 * 创建时间
	 */
	private LocalDateTime createTimeBegin;
	/**
	 * 创建时间
	 */
	private LocalDateTime createTimeEnd;
	/**
	 * 更新时间
	 */
	private LocalDateTime updateTimeBegin;
	/**
	 * 更新时间
	 */
	private LocalDateTime updateTimeEnd;
	/**
	 * 删除标识：0-正常，1-删除
	 */
	private Boolean deleteFlag;
}
